package com.sg.controller.bff;

import com.sg.service.biz.bff.InductionRecordService;
import com.sg.dto.biz.bff.req.*;
import com.sg.dto.biz.bff.res.*;
import com.sg.common.ro.OkrResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ：
 * @version 1.0
 * @date ：
 */
@Api(value = "InductionRecord", tags = {"InductionRecord"})
@RestController
// @RequestMapping("/oms/inductionRecord/")
public class InductionRecordController {

    @Autowired
    InductionRecordService inductionRecordService;

    /**
     * B1-查询员工就职记录列表（边界）
     * gen by moon at 8/31/2022, 5:25:15 PM
     */
    @PostMapping("/oms/inductionRecord/queryStaffInductionRecordList")
    @ApiOperation(value = "B1-查询员工就职记录列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryStaffInductionRecordListRespDto> queryStaffInductionRecordList(@RequestBody(required = false) @Validated BffQueryStaffInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryStaffInductionRecordList(reqDTO));
    }

    /**
     * B1-3查询部门下就职记录列表（边界）
     * gen by moon at 8/10/2022, 3:36:10 AM
     */
    @PostMapping("/oms/mgt/inductionRecord/queryDeptInductionRecordList")
    @ApiOperation(value = "B1-3查询部门下就职记录列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryDeptInductionRecordListRespDto> queryDeptInductionRecordList(@RequestBody(required = false) @Validated BffQueryDeptInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryDeptInductionRecordList(reqDTO));
    }

    /**
     * B1-2查询过滤后可选管理部门（管理）
     * gen by moon at 10/15/2022, 5:53:21 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/queryFilterAdminDeptDetailBorder")
    @ApiOperation(value = "B1-2查询过滤后可选管理部门（管理）", response = OkrResult.class)
    public OkrResult<BffQueryFilterAdminDeptDetailBorderRespDto> queryFilterAdminDeptDetailBorder(@RequestBody(required = false) @Validated BffQueryFilterAdminDeptDetailBorderReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryFilterAdminDeptDetailBorder(reqDTO));
    }

    /**
     * B1-3查询无组织架构就职记录列表（边界）
     * gen by moon at 8/31/2022, 5:25:19 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/queryUnstructuredInductionRecordListBorder")
    @ApiOperation(value = "B1-3查询无组织架构就职记录列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryUnstructuredInductionRecordListBorderRespDto> queryUnstructuredInductionRecordListBorder(@RequestBody(required = false) @Validated BffQueryUnstructuredInductionRecordListBorderReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryUnstructuredInductionRecordListBorder(reqDTO));
    }

    /**
     * B1-3查询直属就职记录列表（边界）
     * gen by moon at 9/12/2022, 12:30:05 AM
     */
    @PostMapping("/oms/inductionRecord/queryDirectInductionRecordListBorder")
    @ApiOperation(value = "B1-3查询直属就职记录列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryDirectInductionRecordListBorderRespDto> queryDirectInductionRecordListBorder(@RequestBody(required = false) @Validated BffQueryDirectInductionRecordListBorderReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryDirectInductionRecordListBorder(reqDTO));
    }

    /**
     * B1-3查询无组织架构就职记录列表
     * gen by moon at 8/31/2022, 5:25:21 PM
     */
    @PostMapping("/oms/inductionRecord/queryUnstructuredInductionRecordList")
    @ApiOperation(value = "B1-3查询无组织架构就职记录列表", response = OkrResult.class)
    public OkrResult<BffQueryUnstructuredInductionRecordListRespDto> queryUnstructuredInductionRecordList(@RequestBody(required = false) @Validated BffQueryUnstructuredInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryUnstructuredInductionRecordList(reqDTO));
    }

    /**
     * B1-3查询更新的就职记录列表（管理）
     */
    @PostMapping("/oms/mgt/inductionRecord/queryUpdatedInductionList")
    @ApiOperation(value = "B1-3查询更新的就职记录列表（管理）", response = OkrResult.class)
    public OkrResult<BffQueryUpdatedInductionListRespDto> queryUpdatedInductionList(@RequestBody(required = false) @Validated BffQueryUpdatedInductionListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryUpdatedInductionList(reqDTO));
    }

    /**
     * B1-3一键更新职务信息（管理-勿删）
     */
    @PostMapping("/oms/mgt/inductionRecord/batchUpdateInductionRecord")
    @ApiOperation(value = "B1-3一键更新职务信息（管理-勿删）", response = OkrResult.class)
    public OkrResult<BffBatchUpdateInductionRecordRespDto> batchUpdateInductionRecord(@RequestBody(required = false) @Validated BffBatchUpdateInductionRecordReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.batchUpdateInductionRecord(reqDTO));
    }

    /**
     * B1-3补充就职记录其它信息（管理）
     * gen by moon at 8/31/2022, 5:25:18 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/perfectPostGradesInfo")
    @ApiOperation(value = "B1-3补充就职记录其它信息（管理）", response = OkrResult.class)
    public OkrResult<BffPerfectPostGradesInfoRespDto> perfectPostGradesInfo(@RequestBody(required = false) @Validated BffPerfectPostGradesInfoReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.perfectPostGradesInfo(reqDTO));
    }

    /**
     * B1-3查询非直属就职记录列表
     * gen by moon at 8/31/2022, 5:25:14 PM
     */
    @PostMapping("/oms/inductionRecord/queryUndoDirectInductionRecordList")
    @ApiOperation(value = "B1-3查询非直属就职记录列表", response = OkrResult.class)
    public OkrResult<BffQueryUndoDirectInductionRecordListRespDto> queryUndoDirectInductionRecordList(@RequestBody(required = false) @Validated BffQueryUndoDirectInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryUndoDirectInductionRecordList(reqDTO));
    }

    /**
     * B1-3调岗就职记录（管理）
     * gen by moon at 9/1/2022, 9:49:02 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/postTransferInductionRecord")
    @ApiOperation(value = "B1-3调岗就职记录（管理）", response = OkrResult.class)
    public OkrResult<BffPostTransferInductionRecordRespDto> postTransferInductionRecord(@RequestBody(required = false) @Validated BffPostTransferInductionRecordReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.postTransferInductionRecord(reqDTO));
    }

    /**
     * B1-3补充系统职务（管理）
     * gen by moon at 8/10/2022, 3:32:07 AM
     */
    @PostMapping("/oms/mgt/inductionRecord/perfectSystemPosition")
    @ApiOperation(value = "B1-3补充系统职务（管理）", response = OkrResult.class)
    public OkrResult<BffPerfectSystemPositionRespDto> perfectSystemPosition(@RequestBody(required = false) @Validated BffPerfectSystemPositionReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.perfectSystemPosition(reqDTO));
    }

    /**
     * B1-3查询就职记录列表（边界）
     * gen by moon at 8/10/2022, 3:31:59 AM
     */
    @PostMapping("/oms/mgt/inductionRecord/queryInductionRecordListBorder")
    @ApiOperation(value = "B1-3查询就职记录列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryInductionRecordListBorderRespDto> queryInductionRecordListBorder(@RequestBody(required = false) @Validated BffQueryInductionRecordListBorderReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryInductionRecordListBorder(reqDTO));
    }

    /**
     * B1-3查询非直属就职记录列表（管理）
     * gen by moon at 8/20/2022, 5:59:40 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/queryUndoDirectInductionRecordMgtList")
    @ApiOperation(value = "B1-3查询非直属就职记录列表（管理）", response = OkrResult.class)
    public OkrResult<BffQueryUndoDirectInductionRecordMgtListRespDto> queryUndoDirectInductionRecordMgtList(@RequestBody(required = false) @Validated BffQueryUndoDirectInductionRecordMgtListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryUndoDirectInductionRecordMgtList(reqDTO));
    }

    /**
     * B1-3存档就职记录（管理）
     * gen by moon at 9/1/2022, 9:48:59 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/toArchiveInductionRecord")
    @ApiOperation(value = "B1-3存档就职记录（管理）", response = OkrResult.class)
    public OkrResult<BffToArchiveInductionRecordRespDto> toArchiveInductionRecord(@RequestBody(required = false) @Validated BffToArchiveInductionRecordReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.toArchiveInductionRecord(reqDTO));
    }

    /**
     * B1-3查询部门直属就职记录列表
     * gen by moon at 8/31/2022, 5:25:07 PM
     */
    @PostMapping("/oms/inductionRecord/queryDirectInductionRecordList")
    @ApiOperation(value = "B1-3查询部门直属就职记录列表", response = OkrResult.class)
    public OkrResult<BffQueryDirectInductionRecordListRespDto> queryDirectInductionRecordList(@RequestBody(required = false) @Validated BffQueryDirectInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryDirectInductionRecordList(reqDTO));
    }

    /**
     * B1-3查询个人就职记录信息详情
     * gen by moon at 9/7/2022, 3:58:46 PM
     */
    @PostMapping("/oms/inductionRecord/queryInductionRecordInfoDetail")
    @ApiOperation(value = "B1-3查询个人就职记录信息详情", response = OkrResult.class)
    public OkrResult<BffQueryInductionRecordInfoDetailRespDto> queryInductionRecordInfoDetail(@RequestBody(required = false) @Validated BffQueryInductionRecordInfoDetailReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryInductionRecordInfoDetail(reqDTO));
    }

    /**
     * B1-3查询就职记录详情（管理）
     * gen by moon at 9/7/2022, 3:58:44 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/queryInductionRecordDetail")
    @ApiOperation(value = "B1-3查询就职记录详情（管理）", response = OkrResult.class)
    public OkrResult<BffQueryInductionRecordDetailRespDto> queryInductionRecordDetail(@RequestBody(required = false) @Validated BffQueryInductionRecordDetailReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryInductionRecordDetail(reqDTO));
    }

    /**
     * B1-3删除就职记录(管理)
     * gen by moon at 8/10/2022, 3:30:31 AM
     */
    @PostMapping("/oms/mgt/inductionRecord/deleteInductionRecord")
    @ApiOperation(value = "B1-3删除就职记录(管理)", response = OkrResult.class)
    public OkrResult<BffDeleteInductionRecordRespDto> deleteInductionRecord(@RequestBody(required = false) @Validated BffDeleteInductionRecordReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.deleteInductionRecord(reqDTO));
    }

    /**
     * B1-3修改就职记录（管理）
     * gen by moon at 8/31/2022, 5:25:04 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/updateInductionRecord")
    @ApiOperation(value = "B1-3修改就职记录（管理）", response = OkrResult.class)
    public OkrResult<BffUpdateInductionRecordRespDto> updateInductionRecord(@RequestBody(required = false) @Validated BffUpdateInductionRecordReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.updateInductionRecord(reqDTO));
    }

    /**
     * B1-3查询管理模式部门直属就职记录列表(管理)
     * gen by moon at 8/10/2022, 3:30:51 AM
     */
    @PostMapping("/oms/mgt/inductionRecord/queryDirectInductionRecordMgtList")
    @ApiOperation(value = "B1-3查询管理模式部门直属就职记录列表(管理)", response = OkrResult.class)
    public OkrResult<BffQueryDirectInductionRecordMgtListRespDto> queryDirectInductionRecordMgtList(@RequestBody(required = false) @Validated BffQueryDirectInductionRecordMgtListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryDirectInductionRecordMgtList(reqDTO));
    }

    /**
     * B1-3新增就职记录(管理)
     * gen by moon at 9/1/2022, 9:48:57 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/addInductionRecord")
    @ApiOperation(value = "B1-3新增就职记录(管理)", response = OkrResult.class)
    public OkrResult<BffAddInductionRecordRespDto> addInductionRecord(@RequestBody(required = false) @Validated BffAddInductionRecordReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.addInductionRecord(reqDTO));
    }

    /**
     * B1-3判断进入就职记录管理模式权限(管理)
     * gen by moon at 8/25/2022, 10:15:57 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/judgeEnterInductionRecordMgtPower")
    @ApiOperation(value = "B1-3判断进入就职记录管理模式权限(管理)", response = OkrResult.class)
    public OkrResult<BffJudgeEnterInductionRecordMgtPowerRespDto> judgeEnterInductionRecordMgtPower(@RequestBody(required = false) @Validated BffJudgeEnterInductionRecordMgtPowerReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.judgeEnterInductionRecordMgtPower(reqDTO));
    }

    /**
     * B1-3查询可分配主管就职记录列表
     * gen by moon at 9/12/2022, 12:30:12 AM
     */
    @PostMapping("queryChargeInductionRecordList")
    @ApiOperation(value = "B1-3查询可分配主管就职记录列表", response = OkrResult.class)
    public OkrResult<BffQueryChargeInductionRecordListRespDto> queryChargeInductionRecordList(@RequestBody(required = false) @Validated BffQueryChargeInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryChargeInductionRecordList(reqDTO));
    }

    /**
     * B1-3批量查询直属就职记录(边界)
     * gen by moon at 9/12/2022, 12:30:08 AM
     */
    @PostMapping("/oms/inductionRecord/batchQueryDirectInductionRecordBorder")
    @ApiOperation(value = "B1-3批量查询直属就职记录(边界)", response = OkrResult.class)
    public OkrResult<BffBatchQueryDirectInductionRecordBorderRespDto> batchQueryDirectInductionRecordBorder(@RequestBody(required = false) @Validated BffBatchQueryDirectInductionRecordBorderReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.batchQueryDirectInductionRecordBorder(reqDTO));
    }

    /**
     * B1-3查询可分配参与者就职记录列表
     * gen by moon at 9/19/2022, 7:28:42 PM
     */
    @PostMapping("/oms/inductionRecord/queryParticipantInductionRecordList")
    @ApiOperation(value = "B1-3查询可分配参与者就职记录列表", response = OkrResult.class)
    public OkrResult<BffQueryParticipantInductionRecordListRespDto> queryParticipantInductionRecordList(@RequestBody(required = false) @Validated BffQueryParticipantInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryParticipantInductionRecordList(reqDTO));
    }

    /**
     * B1-3查询可分配责任人就职记录列表
     * gen by moon at 9/19/2022, 7:28:40 PM
     */
    @PostMapping("/oms/inductionRecord/queryPrincipalInductionRecordList")
    @ApiOperation(value = "B1-3查询可分配责任人就职记录列表", response = OkrResult.class)
    public OkrResult<BffQueryPrincipalInductionRecordListRespDto> queryPrincipalInductionRecordList(@RequestBody(required = false) @Validated BffQueryPrincipalInductionRecordListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryPrincipalInductionRecordList(reqDTO));
    }

    /**
     * B1-3批量查询可分配责任人就职记录(边界)
     * gen by moon at 9/19/2022, 7:29:10 PM
     */
    @PostMapping("/oms/inductionRecord/batchQueryPrincipalInductionRecordBorder")
    @ApiOperation(value = "B1-3批量查询可分配责任人就职记录(边界)", response = OkrResult.class)
    public OkrResult<BffBatchQueryPrincipalInductionRecordBorderRespDto> batchQueryPrincipalInductionRecordBorder(@RequestBody(required = false) @Validated BffBatchQueryPrincipalInductionRecordBorderReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.batchQueryPrincipalInductionRecordBorder(reqDTO));
    }

    /**
     * B1-3查询部门下直属就职记录列表(边界)
     * gen by moon at 11/17/2022, 8:12:18 AM
     */
    @PostMapping("/oms/inductionRecord/queryDeptInductionRecordListBorder")
    @ApiOperation(value = "B1-3查询部门下直属就职记录列表(边界)", response = OkrResult.class)
    public OkrResult<BffQueryDeptInductionRecordListBorderRespDto> queryDeptInductionRecordListBorder(@RequestBody(required = false) @Validated BffQueryDeptInductionRecordListBorderReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryDeptInductionRecordListBorder(reqDTO));
    }

    /**
     * B1-设置主岗(管理)
     * gen by moon at 9/21/2023, 12:48:21 PM
     */
    @PostMapping("/oms/mgt/inductionRecord/implementSetMajorPosition")
    @ApiOperation(value = "B1-设置主岗(管理)", response = OkrResult.class)
    public OkrResult<BffImplementSetMajorPositionRespDto> implementSetMajorPosition(@RequestBody(required = false) @Validated BffImplementSetMajorPositionReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.implementSetMajorPosition(reqDTO));
    }

    /**
     * B1查询基层向上汇报对象列表
     * gen by moon at 5/15/2024, 3:55:26 PM
     */
    @PostMapping("/oms/inductionRecord/queryBasicUpReportLeaderList")
    @ApiOperation(value = "B1查询基层向上汇报对象列表", response = OkrResult.class)
    public OkrResult<BffQueryBasicUpReportLeaderListRespDto> queryBasicUpReportLeaderList(@RequestBody(required = false) @Validated BffQueryBasicUpReportLeaderListReqDto reqDTO) {
        return OkrResult.success(inductionRecordService.queryBasicUpReportLeaderList(reqDTO));
    }
}
